<?php
	/**
	 * Modelo de ficheiro Excel para exportação de Projectos
	 * Precedencias:
	 * 		=> DIR_PROJECTOS/exportar_excel_projectos.php
	 * 
	 * @since 02/04/2008
	 * @author JRS
	 */
	
	#Includes SoftsetSense
	require_once ('../includes/config.php');
	include DIR_INCLUDES_FT.'bootstrap.php';
	require_once (DIR_TOOLKIT_FT.'phpExcel/EXCELExport.class.php');
	
	#Includes PHPExcel
	require_once (DIR_TOOLKIT_FT.'phpExcel/PHPExcel.php');
	require_once (DIR_TOOLKIT_FT.'phpExcel/PHPExcel/RichText.php');

class ExportarExcelCategoria extends EXCELExport {
	
	/**
	 * Método Constructor
	 *
	 * @param unknown_type $projectoID
	 */
	public function __construct($categoria_id) {
		$this->categoria_id = $categoria_id;
		parent::__construct($this->geraExcel(), $this->getNomeFicheiro());
	}
	
	/*************************************************************************
	 ************************* INICIO DO DOCUMENTO ***************************/
	public function geraExcel () {
		
		ini_set("memory_limit","256M");
		
		#Cria um novo objecto PHPExcel
		$objPHPExcel = new PHPExcel();
		#Define as propriedades do documento
		$objPHPExcel->getProperties()->setCreator("BiostrumentStocks");
		$objPHPExcel->getProperties()->setLastModifiedBy("BiostrumentStocks");
		$objPHPExcel->getProperties()->setTitle("Categoria");
		$objPHPExcel->getProperties()->setSubject("Categoria");
		$objPHPExcel->getProperties()->setDescription("Categoria");
		$objPHPExcel->getProperties()->setKeywords("Categoria");
		$objPHPExcel->getProperties()->setCategory("Categoria");
		
		#Remove as gridlines
		$objPHPExcel->getActiveSheet()->setShowGridlines(true);
		#Atribui um Header e um Footer para a impressão
		$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader('&L&BProdutos da Categoria&RImpresso em &D');
		$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddFooter('&L&B' . $objPHPExcel->getProperties()->getTitle() . '&RPágina &P de &N');
		#Define o tamanho e orientação da página
		$objPHPExcel->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4);
		$objPHPExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE);
		
		#Cria uma folha de dados
		$objPHPExcel->setActiveSheetIndex(0);
		#Modifica o nome da folha de dados
		$objPHPExcel->getActiveSheet()->setTitle('Categoria');
		#Retorna o objecto PHPExcel
		
		$categoria = Doctrine_Query::create()
							->from("Categorias c")
							->innerJoin("c.Produtos p")
							->innerJoin("p.CodigosBarrasProdutos cbp")
							->innerJoin("cbp.CodigosBarras")
							->where("c.id = ?", array($this->categoria_id))->fetchOne(array(), Doctrine::HYDRATE_ARRAY);
		
		$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(0, 0, "Produtos: ");
		$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(1, 0, "Codigo Barras: ");
		$i = 1;
		foreach ($categoria['Produtos'] as $produto) {
			foreach ($produto['CodigosBarrasProdutos'] as $codigo){
				$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(0, $i, $produto['nome']);
				$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(1, $i, $codigo['CodigosBarras']['codigo_barras']);
			}
			$i++;
		}
		
		return $objPHPExcel;
	}

	/**
	 * Método herdado da Interface iExportExcel
	 *
	 */
	public function getNomeFicheiro () {
		$categoria = Doctrine_Query::create()->from("Categorias c")
					->where("c.id = ?", array($this->categoria_id))->execute(array(), Doctrine::HYDRATE_ARRAY);
		$nome = str_replace(" ", "", $categoria[0]['nome']);
		return "categoria_".$nome."_".$categoria[0]['id']."_".date("[dmY_His]").".xls";
	}
}
?>